<!-- WebWheel页面模板格式为松散的Well-Formed XML -->
<!-- 模板中标签必须正常的开启关闭，属性值以单引号或者双引号包含 -->
<!-- 模板不受XML单根的限制，可以多根，也可以没有任何标签，但是一旦有标签就必须正确的开启关闭 -->
<!-- 在应用程序部署后，此模板可随时修改，并会想jsp文件一样实时反映到最终渲染结果之上 -->
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>页面模板</title>
</head>
<body>
<!-- 在文本或者html标签属性值中可通过${}标记调用WebWheel表达式，在页面渲染时求值插入到模板中相应位置 -->
<!-- WebWheel表达式是一种简单的表达式语言，可支持四则运输，逻辑求值，方法调用，数组索引等等，常量包括基本类型，以单引号为范围的字符串常量，以及null -->
<!-- 调用的页面方法必须是来自模板所对应的java对象，方法的名称可以是对象的公开属性，或者符合bean规范的getter的属性名称，也可以是方法全名，当参数列表长度为0时，可以省略掉小括号 -->
<!-- 例如这里的date，将会调用IndexPage.getDate()方法，其等效的书写方式包括：date date() getDate getDate() -->
<!-- 方法的调用可支持级联方式，如propA.propB.propC，将依次求出属性propA的属性propB的属性propC -->
<!-- 如果表达式解析失败，则会进行安静处理，将其视为普通文本 -->
我是模板，当前时间是 ${date}<br/>
<table border='1'>
<tr>
<th>字符串</th>
<th>hashcode</th>
<th>翻转</th>
<th>长度小于5</th>
</tr>
<!-- 在标签中使用w:属性指定所处的dom使用w:的表达式值进行渲染，如果w:的表达式返回值类型为java.lang.Iterable或者java.util.Iterator，则进行循环渲染 -->
<!-- 在当前dom模板中的表达式求值将自动适配每一级的w:类型，直至页面对象 -->
<!-- 在标签中使用w:属性指定输出动态内容（即表达式的求值结果），w:后面为输出的标签属性名称，这里是输出style属性，当属性名称为content时含义为输出标签内容，当属性名称为tag时含义为输出标签名称 -->
<!-- 在循环的模板中，可使用_idx变量，此变量是一个特殊变量，为循环计数，从0开始。这里的循环变量为strs中的集合元素 -->
<tr w:="strs" w:style="color:${_idx%2==0?'green':'red'}">
<!-- 在标签中使用q:属性指定是否输出某标签属性，q:后面为是否输出的标签属性名称，这里是是否输出style属性，当属性名称为content时含义为是否输出标签内容，当属性名称为tag是含义为是否输出标签本身，当属性名称为空时含义为是否输出整个标签（标签本身+内容） -->
<td w:content="this" style="background-color:#ccccff" q:style="length>6">我是字符串</td>
<td>${hashCode}</td>
<td>${revert(this)}</td>
<!-- 当表达式出现在标签内容中时，如果表达式中出现了小于号<，则需要使用&lt;进行转码 -->
<td>${length&lt;5}</td>
</tr>
<!-- 重复的循环组件渲染将会在最终的渲染结果中去掉 -->
<tr w:="strs">
<td style="background-color:#ccccff">我是字符串</td>
<td>10123</td>
<td>翻转 的字符串</td>
<td>长度是否小于5</td>
</tr>
</table>
<a href="index.temp.html">查看模板</a>
<a href="index.html">查看渲染结果</a>
</body>
</html>
